package ar.com.ctrln.persistence.dao.persona;

import java.util.List;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;

import ar.com.ctrln.persistence.dao.AbstractHibernateDao;
import ar.com.ctrln.persistence.model.contacto.Contacto;
import ar.com.ctrln.persistence.model.empleado.Empleado;
import ar.com.ctrln.persistence.model.persona.AbstractPersona;

@Repository("personaDao")

public class HibernatePersonaDao extends AbstractHibernateDao<AbstractPersona> implements PersonaDao {

	@Override
	public Contacto findContactoByApellido(String apellido) {
		Query q = getSession().createQuery("from Contacto c where c.nombre = ?");
		q.setParameter(0, apellido);
		return (Contacto) q.uniqueResult();
	}

	@Override
	public Contacto findContactoByDocumento(String documento) {
		Query q = getSession().createQuery("from Contacto c where c.nombre = ?");
		q.setParameter(0, documento);
		return (Contacto) q.uniqueResult();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Contacto> listAllContactosByCliente(long idCliente) {
		Query q = getSession().createQuery("select c.contactos from Cliente as c where c.id = ?");
		q.setParameter(0, idCliente);
		return (List<Contacto>)q.list();
	}

	@Override
	public Empleado findEmpleadoByApellido(String apellido) {
		Query q = getSession().createQuery("from Cliente c where c.nombre = ?");
		q.setParameter(0, apellido);
		return (Empleado) q.uniqueResult();
	}

	@Override
	public Empleado findEmpleadoByDocumento(String documento) {
		Query q = getSession().createQuery("from Cliente c where c.nombre = ?");
		q.setParameter(0, documento);
		return (Empleado) q.uniqueResult();
	}

}
